import time


class RequestTimingMiddleware:
    """
    请求耗时统计中间件
    功能：
      1. 记录请求开始时间
      2. 处理请求
      3. 计算请求处理总耗时
      4. 将耗时添加到响应头中
    """

    def __init__(self, get_response):
        """
        初始化中间件
        """
        self.get_response = get_response

    def __call__(self, request):
        """
        处理每个请求
        """
        # 记录请求开始时间
        start_time = time.time()

        # 处理请求（调用下一个中间件或视图）
        response = self.get_response(request)

        # 计算请求处理耗时（单位：秒）
        duration = time.time() - start_time
        print(f"耗时{duration:.3f}")

        # 将耗时添加到响应头（毫秒，保留3位小数）
        response["X-Request-Duration"] = f"{duration:.3f}"

        return response
